/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
 */
#ifndef MCU_LOG_DEMO_H
#define MCU_LOG_DEMO_H

#include "hlink_log_api.h"
#if 1
/* 日志级别格式类型是一个unsigned int，从低位开始，其中：
 * 第1-8位，日志级别，定义参考枚举类型hlink_log_level
 * 第9位，写flash标志位，0X00000100为写flash
 * 第10位，日志上传网关/APP标志位，0X00000200为上传标志
 * 第11-15位，保留
 * 第16-32位，mid，0x00000000-0x00030000模组侧已经使用，MCU部分日志mid从0x00040000开始
 */


/* MCU日志mid，0x00000000-0x00030000模组侧已经使用，MCU部分日志mid从0x00040000开始 */
#define HLINK_MCU_MID             0x00040000


/* 日志打印总体原则：
 * 应用部分的日志：均上传APP/gateway，仅error级别写flash。
 * OMIP协议内部的日志：均不上传APP/gateway（防止日志通过串口上传时重复打印），仅error级别写flash（特殊情况：少量关键流程info级别写flash）
 */

/* error级别，适用于应用部分的日志打印：日志写flash、上传APP/gateway */
#define MCU_LOG_ERROR           HLINK_INFOID_DEF(HLINK_MCU_MID, HLINK_LOG_UPLOAD, HLINK_LOG_FLASH, HLINK_LOG_ERROR)
/* error级别，适用于OMIP协议内部的日志打印：日志写flash、不上传APP/gateway */
#define MCU_LOG_ERROR_NO_UPLOAD HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_FLASH, HLINK_LOG_ERROR)

/* info级别，适用于应用部分的日志打印：日志上传APP/gateway、不存flash*/
#define MCU_LOG_INFO_UPLOAD     HLINK_INFOID_DEF(HLINK_MCU_MID, HLINK_LOG_UPLOAD, HLINK_LOG_NO_FLASH, HLINK_LOG_INFO)
/* info级别，适用于OMIP协议内部的关键流程日志打印：日志不上传APP/gateway，存flash，*/
#define MCU_LOG_INFO_FLASH      HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_FLASH, HLINK_LOG_INFO)
/* info级别，适用于OMIP协议内部的普通日志打印：日志不上传APP/gateway，不存flash */
#define MCU_LOG_INFO_PRINT      HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_NO_FLASH, HLINK_LOG_INFO)

/* debug级别，适用于应用部分的日志打印：日志上传APP/gateway、不存flash*/
#define MCU_LOG_DEBUG_UPLOAD     HLINK_INFOID_DEF(HLINK_MCU_MID, HLINK_LOG_UPLOAD, HLINK_LOG_NO_FLASH, HLINK_LOG_DEBUG)
/* debug级别，适用于OMIP协议内部的关键流程日志打印：日志不上传APP/gateway，存flash，*/
#define MCU_LOG_DEBUG_FLASH      HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_FLASH, HLINK_LOG_DEBUG)
/* debug级别，适用于OMIP协议内部的普通日志打印：日志不上传APP/gateway，不存flash */
#define MCU_LOG_DEBUG_PRINT      HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_NO_FLASH, HLINK_LOG_DEBUG)

/* detail级别，打印OMIP码流时用到，默认关闭，若需要打开，修改日志级别HLINK_LOG_MAX为HLINK_LOG_DEBUG */
#define MCU_LOG_DETAIL           HLINK_INFOID_DEF(HLINK_MCU_MID, MCU_LOG_NO_UPLOAD, HLINK_LOG_NO_FLASH, HLINK_LOG_MAX)

void mcu_log_demo_init(void);
void omip_print_io_bytes(const unsigned char *pp, unsigned short len, unsigned char sr, unsigned char node_id);
#endif
#endif /* MCU_LOG_DEMO_H */
